/**
 * 一位很棒的家长为孩子们分发饼干。对于每个孩子 i，都有一个胃口值 g[i]，即每个小孩希望得到饼干的最小尺寸值。对于每块饼干 j，都有一个尺寸值 s[j]。只有当 s[j] > g[i] 时，我们才能将饼干 j 分配给孩子 i。每个孩子最多只能给一块饼干。

现在给定代表所有孩子胃口值的数组 g 和代表所有饼干尺寸的数组 j。

要求：尽可能满足越多数量的孩子，并求出这个最大数值。
 */

// 思路：
// 1. 转换问题：将原问题转变为当胃口最小的孩子选择完满足这个孩子胃口且尺寸最小的饼干后，再解决剩下孩子的选择问题
// 2. 贪心选择性质：对于当前孩子，用尺寸尽可能小的饼干满足这个孩子的胃口
// 3. 最优子结构性质：在上面的贪心策略下，当前孩子的贪心选择 + 剩下孩子的子问题最优解，就是全局最优解

function findContentChildren(g, s) {
    g.sort()
    s.sort()
    let index_g = 0
    let index_s = 0
    let res = 0
    while (index_g < g.length &&  index_s < s.length) {
        if (g[index_g] <= s[index_s]) {
            res += 1
            index_g += 1
            index_s += 1
        } else {
            index_s += 1
        }
    }
    return res
}

let g = [1, 2, 3]
let s = [1, 1]
console.log(findContentChildren(g, s))